package com.dd.cloud.common.utils;

import java.math.BigDecimal;

/**
 * @author Lx
 * @version 1.0
 */
public class BigDecimalUtils {
    /**
     * 小数位
     */
    public static final int SCALE = 2;

    /**
     * val1 / val2 保留两位小数 四舍五入
     *
     * @param val1
     * @param val2
     * @return
     */
    public static BigDecimal divide(Integer val1, Integer val2) {
        return divide(val1, val2, SCALE);
    }

    /**
     * val1 * val2  保留两位小数 四舍五入
     *
     * @param val1
     * @param val2
     * @return
     */
    public static BigDecimal divide(BigDecimal val1, BigDecimal val2) {
        return divide(val1, val2, SCALE);
    }

    /**
     * val1 / val2  scale保留小数 四舍五入
     *
     * @param val1
     * @param val2
     * @param scale
     * @return
     */
    public static BigDecimal divide(Integer val1, Integer val2, int scale) {
        return divide(BigDecimal.valueOf(val1), BigDecimal.valueOf(val2), scale);
    }

    /**
     * val1 * val2  scale保留小数 四舍五入
     *
     * @param val1
     * @param val2
     * @param scale
     * @return
     */
    public static BigDecimal divide(BigDecimal val1, BigDecimal val2, int scale) {
        return val1.divide(val2, 12, BigDecimal.ROUND_HALF_UP).setScale(scale, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * val1 * val2 保留两位小数 四舍五入
     *
     * @param val1
     * @param val2
     * @return
     */
    public static BigDecimal multiply(Integer val1, Integer val2) {
        return multiply(val1, val2, SCALE);
    }

    /**
     * val1 * val2 保留两位小数 四舍五入
     *
     * @param val1
     * @param val2
     * @return
     */
    public static BigDecimal multiply(BigDecimal val1, BigDecimal val2) {
        return multiply(val1, val2, SCALE);
    }

    /**
     * val1 * val2  scale保留小数 四舍五入
     *
     * @param val1
     * @param val2
     * @param scale
     * @return
     */
    public static BigDecimal multiply(Integer val1, Integer val2, int scale) {
        return multiply(BigDecimal.valueOf(val1), BigDecimal.valueOf(val2), scale);
    }

    /**
     * val1 * val2  scale保留小数 四舍五入
     *
     * @param val1
     * @param val2
     * @param scale
     * @return
     */
    public static BigDecimal multiply(BigDecimal val1, BigDecimal val2, int scale) {
        return val1.multiply(val2).setScale(scale, BigDecimal.ROUND_HALF_UP);
    }
}
